Steady component and style guide

Calm, warm and clear. Built for one-handed use on a phone.

Open the app

Principles

One clear action per screen

Primary teal buttons are rare and obvious. Everything else is secondary or a text link.

Never shame, never alarm

Amber means “worth a look”. Soft red only for money actually below zero or over plan.

Say it like a person

“You have £312 left this month”, not “Remaining budget”. Celebrate small wins.

Big, forgiving targets

Every tap target is at least 44px. Body text is 16px or more. No horizontal scrolling.

Colour

CSS custom properties, switched by html[data-theme]. Toggle the theme above to see dark values.

{{ c.name }}
{{ c.token }}
{{ c.hex }}
{{ c.use }}

Type

Figtree, with tabular figures so amounts line up. Body never below 16px; 13–14px only for labels and meta.

{{ t.spec }}
{{ t.sample }}

Spacing and shape

A 4px base. Cards use 20px padding and 20px radius; hero cards 24px.

{{ s.label }}
{{ r.label }}

Buttons

Primary 52px · Secondary 48px · Tonal, text and icon 44px · Floating quick-add 60px. One primary per screen or sheet.

Cards

So far this month
You have £312.40 left this month
£2,284.20 came in · £1,971.80 went out
Money in £2,284.20
Barclaycard
Credit card · due on the 15th
£2,470.00
Active
15% cleared£70.00 a month£80.00 in arrears

Form fields

Labels always visible. Errors are amber, written as a helpful next step, and never block the rest of the form.

Chips
Segmented
Switch
Clear priority debts first

Status and progress

Budget bars move from green to amber at 80%, and to soft red only once over plan.

Plan agreed Active In dispute Paused Paid off Priority
{{ b.name }}{{ b.fig }}
{{ b.note }}

Sheets, toasts and empty states

Forms open in a bottom sheet on phones and a centred dialog on wide screens. Every delete and edit offers Undo.

Update balance
£2,470.00
Save new balance
Entry deletedUndo
That clears Klarna. Well done.
Something to save for?

Give it a target and a date, and Steady shows what to put aside each month.

Create a goal

Icons

24px grid, 1.8px rounded stroke, inherit text colour. Use with <s-icon name="…">.

{{ i }}

Microcopy

{{ c.no }}
{{ c.yes }}